package com.sspaas.manage.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

import com.sspaas.manage.pojo.Api;
import com.sspaas.manage.service.IApiService;
import com.sspaas.mongodb.AbstractBaseMongoTemplete;
@Service
public class ApiServiceImpl extends AbstractBaseMongoTemplete implements IApiService {

	/**
	 * 新增
	 */
	public void insert(Api api) {
		mongoTemplate.insert(api);
	}

	/**
	 * 新增
	 */
	public void insertAll(List<Api> apis) {
		mongoTemplate.insertAll(apis);
	}

	/**
	 * 删除,主键id, 如果主键的值为null,删除会失败
	 */
	public void deleteById(String id) {
		Api api = new Api(id, null, null);
		mongoTemplate.remove(api);
	}

	/**
	 * 删除全部
	 */
	public void deleteAll() {
		mongoTemplate.dropCollection(Api.class);
	}

	/**
	 * 按主键修改,  
     * 如果文档中没有相关key 会新增 使用$set修改器 
	 */
	public void updateById(Api api) {
		Criteria criteria = Criteria.where("id").is(api.getId());  
        Query query = new Query(criteria);  
        Update update = Update.update("age", api.getName()).set("name", api.getDescribe());  
        mongoTemplate.updateFirst(query, update, Api.class);
	}

	/**
	 * 根据主键查询
	 */
	public Api findById(String id) {
		return mongoTemplate.findById(id, Api.class);
	}

	/**
	 * 查询全部
	 */
	public List<Api> findAll() {
		return mongoTemplate.findAll(Api.class);
	}

}
